home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / d / mtarea.d < prev    next >
Text File  |  1997-10-26  |  5KB  |  116 lines

  1. (*----------------------------------------------------------------------*
  2.  *                                                                      *
  3.  *  MAGICTOOLS   Modula's  All purpose  GEM  Interface  Cadre  Toolbox  *
  4.  *               ÿ         ÿ            ÿ    ÿ          ÿ               *
  5.  *----------------------------------------------------------------------*
  6.  * Version 3.30  02.02.1992     (C)90/91/92 by Peter Hellinger Software *
  7.  *----------------------------------------------------------------------*
  8.  *            Dieses Modul ist urheberrechtlich geschtzt.              *
  9.  *                                                                      *
  10.  * Die Ver”ffentlichung des Quelltextes oder Teilen daraus, sowie die   *
  11.  * Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
  12.  * oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail-    *
  13.  * boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen    *
  14.  * Einverst„ndnisserkl„rung des Autors.                                 *
  15.  *                                                                      *
  16.  * Die Verbreitung des Moduls als Teil eines gelinkten Programms ist    *
  17.  * fr Lizenznehmer ausdrcklich erlaubt!  Der Autor beh„lt sich das    *
  18.  * Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
  19.  * widerrufen.                                                          *
  20.  *----------------------------------------------------------------------*)
  21.  
  22. (*----------------------------------------------------------------------*
  23.  * mtArea       Manipulation von Bildschirmbereichen                    *
  24.  *                                                                      *
  25.  * WICHTIG:  Rechtecke bestehen PRINZIPIELL aus Koordinate (x, y),      *
  26.  * Breite (w) und H”he (h)!!!                                           *
  27.  *----------------------------------------------------------------------*)
  28.  
  29. DEFINITION MODULE mtArea;
  30.  
  31. FROM MagicSys   IMPORT  Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
  32.                         Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
  33.                         Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  34.                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  35.  
  36.  
  37.  
  38.  
  39.  
  40. TYPE  AREA;
  41.  
  42. PROCEDURE NewAREA (VAR a: AREA): BOOLEAN;
  43. (* Legt neue AREA-Variable an, FALSE wenn nicht gelungen  *)
  44.  
  45. PROCEDURE DisposeAREA (VAR a: AREA);
  46. (* Gibt die AREA-Variable frei, falls noch Bildspeicher alloziert ist,
  47.  * wird dieser ebenfalls freigegeben
  48.  *)
  49.  
  50. PROCEDURE FreeArea (a: AREA);
  51. (* Gibt den allozierten Bildspeicher frei *)
  52.  
  53.  
  54. (* hndl = Handle der Workstation, die beim Blitten benutzt werden soll.
  55.  *        Wichtig fr Clipping!  Bisher wurde mtAppl.VDIHandle benutzt,
  56.  *        was bei eingeschaltetem Clipping fr mtAppl.VDIHandle natrlich
  57.  *        voll in die Hose geht!  Hp 23.10.91
  58.  *
  59.  *)
  60.  
  61. PROCEDURE SaveArea (hndl: sINTEGER; a: AREA; rect: ARRAY OF LOC): BOOLEAN;
  62. (* Sichert einen Bildschirmbereich ins RAM. FALSE, wenn nicht gengend
  63.  * RAM zur Verfgung stand. Ist bereits ein Bildspeicher alloziert und
  64.  * dieser fr das zu sichernde Teilstck zu klein, wird dieser freigegeben
  65.  * und ein neues Teilsstck alloziert.
  66.  *)
  67.  
  68. PROCEDURE CopyArea (hndl: sINTEGER; a: AREA; x, y: sINTEGER);
  69. (* Kopiert einen mit SaveArea gespeicherten Bereich an Position x, y *)
  70.  
  71. PROCEDURE RestoreArea (hndl: sINTEGER; a: AREA);
  72. (* Blittet einen mit SaveArea gespeicherten Bereich wieder auf die
  73.  * Originalposition am Schirm
  74.  *)
  75.  
  76. PROCEDURE MoveArea (hndl: sINTEGER; a: AREA; xmove, ymove: sINTEGER; 
  77.                     VAR x, y: sINTEGER);
  78. (* "Bewegt" einen AREA-Bereich um eine Anzahl Pixel. Es wird dabei entlang 
  79.  * der X- und Y-Achse verschoben.  'xmove' ist die Verschiebung entlang der
  80.  * X-Achse (negative Werte verschieben nach LINKS, positive nach RECHTS);
  81.  * 'ymove' ist die Verschiebung entlang der Y-Achse (negativ verschiebt
  82.  * nach OBEN, positiv nach UNTEN).  Diese Žnderung erm”glicht ein viel 
  83.  * einfacheres Handling durch die Klientmodule mtDials und mtPopups.
  84.  * Es wird wie folgend vorgegangen:
  85.  *
  86.  *  MoveArea (handle, area, 0, -5, x, y);
  87.  *
  88.  *  +----------------------------+
  89.  *  |XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
  90.  *  +----------------------------+
  91.  *  |                            |
  92.  *  |                            |
  93.  *  |                            |
  94.  *  |                            |
  95.  *  |                            |
  96.  *  +----------------------------+
  97.  *  |############################|
  98.  *  +----------------------------+
  99.  *
  100.  * Zuerst wird die alte Bildschirmfl„che (#) im in Frage kommenden Bereich
  101.  * wieder hergestellt.  Die gesamte Fl„che wird intern um 5 Pixel nach unten
  102.  * geschoben, die unteren 5 Pixel der Fl„che (#) gehen dabei verloren. 
  103.  * Anschliežend wird vom Bildschirm an der aktuellen Position 5 Pixel-Reihen
  104.  * in die oberen Pixel der Fl„che (X) kopiert.
  105.  *
  106.  * In x,y wird die neue Position des Rechtecks geliefert.
  107.  *)
  108.  
  109. PROCEDURE InitMtArea;
  110. (* Initialisiert das Modul. Wird im Modulk”rper ausgefhrt und braucht
  111.  * nicht weiter beachtet zu werden.
  112.  *)
  113.  
  114. END mtArea.
  115.  
  116.